
function Food(fid,fname,price,num){
	this.fid=fid;
	this.fname=fname;
	this.price=price;
	this.num=1;
	if(num==0||num){
	this.num=num;
	}
}
function Cart(){
	this.foodCart = {};
	this.sum = 0;
}

Cart.prototype.addFood= function(food){
	var id = food.fid;
	if(this.foodCart[id]){
		this.foodCart[id].price =accAdd(this.foodCart[id].price,accDiv(this.foodCart[id].price,this.foodCart[id].num)).toFixed(2);
		this.foodCart[id].num++;
	}
	else
		this.foodCart[id] = new Food(id,food.fname,food.price,1);
	this.sum=0;
	for(food in this.foodCart){		
		this.sum = accAdd(this.sum,this.foodCart[food].price).toFixed(2);
	}
}
Cart.prototype.decFood = function(food){
	var id = food.fid;
	this.foodCart[id].price =accAdd(this.foodCart[id].price,accDiv(this.foodCart[id].price,this.foodCart[id].num)).toFixed(2);
	this.foodCart[id].num--;
	if(this.foodCart[id].num<0){
		delete this.foodCart[id];
	}
	this.sum=0;
	for(food in this.foodCart){		
		this.sum = accAdd(this.sum,this.foodCart[food].price).toFixed(2);
	}
}
Cart.prototype.setFood = function(food){
	var id = food.fid;
	if(food.num<=0)
	{
		delete this.foodCart[id];
	}
	else{
	this.foodCart[id].price =accMul(accDiv(this.foodCart[id].price,this.foodCart[id].num),food.num).toFixed(2);
	this.foodCart[id].num = food.num;
	}
	this.sum=0;
	for(food in this.foodCart){		
		this.sum = accAdd(this.sum,this.foodCart[food].price).toFixed(2);
	}
}

 function accMul(arg1,arg2)   
{   
    var m=0,s1=arg1.toString(),s2=arg2.toString();   
    try{m+=s1.split(".")[1].length}catch(e){}   
    try{m+=s2.split(".")[1].length}catch(e){}   
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)   
}   
  
function accDiv(arg1,arg2){   
    var t1=0,t2=0,r1,r2;   
    try{t1=arg1.toString().split(".")[1].length}catch(e){}   
    try{t2=arg2.toString().split(".")[1].length}catch(e){}   
    with(Math){   
    r1=Number(arg1.toString().replace(".",""))   
    r2=Number(arg2.toString().replace(".",""))   
    return (r1/r2)*pow(10,t2-t1);   
    }   
}   
  
function accAdd(arg1,arg2){      
   var r1,r2,m;      
   try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}    
   try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}     
        m=Math.pow(10,Math.max(r1,r2))  
        return (arg1*m+arg2*m)/m      
}         
function accSub(arg1,arg2){      
   var r1,r2,m;      
   try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}    
   try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}     
        m=Math.pow(10,Math.max(r1,r2))  
        return (arg1*m-arg2*m)/m      
}     

